home *** CD-ROM | disk | FTP | other *** search
/ Linux Cubed Series 2: Applications / Linux Cubed Series 2 - Applications.iso / editors / emacs / xemacs / xemacs-1.004 / xemacs-1 / xemacs-19.13 / src / m / intel386.h < prev    next >
Encoding:
C/C++ Source or Header  |  1995-08-26  |  6.6 KB  |  231 lines

  1. /* Machine description file for intel 386.
  2.    Copyright (C) 1987 Free Software Foundation, Inc.
  3.  
  4. This file is part of GNU Emacs.
  5.  
  6. GNU Emacs is free software; you can redistribute it and/or modify
  7. it under the terms of the GNU General Public License as published by
  8. the Free Software Foundation; either version 2, or (at your option)
  9. any later version.
  10.  
  11. GNU Emacs is distributed in the hope that it will be useful,
  12. but WITHOUT ANY WARRANTY; without even the implied warranty of
  13. MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
  14. GNU General Public License for more details.
  15.  
  16. You should have received a copy of the GNU General Public License
  17. along with GNU Emacs; see the file COPYING.  If not, write to
  18. the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA.  */
  19.  
  20. /* Synched up with: FSF 19.29. */
  21.  
  22. /* The following line tells the configuration script what sort of 
  23.    operating system this machine is likely to run.
  24.    USUAL-OPSYS="note"
  25.  
  26. NOTE-START
  27. Intel 386 (-machine=intel386 or -machine=is386.h)
  28.  
  29.   The possibilities for -opsystem are: bsd4-2, usg5-2-2, usg5-3,
  30.   isc2-2, 386-ix, esix, linux, sco3.2v4, and xenix.
  31.  
  32.   18.58 should support a wide variety of operating systems.
  33.   Use isc2-2 for Interactive 386/ix version 2.2.
  34.   Use 386ix for prior versions.
  35.   Use esix for Esix.
  36.   Use linux for Linux.
  37.   It isn't clear what to do on an SCO system.
  38.  
  39.   -machine=is386 is used for an Integrated Solutions 386 machine.
  40.   It may also be correct for Microport systems.
  41.  
  42. Cubix QBx/386 (-machine=intel386 -opsystem=usg5-3)
  43.  
  44.   Changes merged in 19.1.  Systems before 2/A/0 may fail to compile etags.c
  45.   due to a compiler bug.
  46.  
  47. Prime EXL (-machine=intel386 -opsystem=usg5-3)
  48.  
  49.   Minor changes merged in 19.1.
  50. NOTE-END */
  51.  
  52. /* Define WORD_MACHINE if addresses and such have
  53.  * to be corrected before they can be used as byte counts.  */
  54.  
  55. /* #define WORD_MACHINE */
  56.  
  57. /* Now define a symbol for the cpu type, if your compiler
  58.    does not define it automatically:
  59.    Ones defined so far include vax, m68000, ns16000, pyramid,
  60.    orion, tahoe, APOLLO and many others */
  61.  
  62. #define INTEL386
  63.  
  64. /* Use type int rather than a union, to represent Lisp_Object */
  65. /* (XEmacs: Now that the byte-order business has been straightened out,
  66.     it may be safe to leave NO_UNION_TYPE undefined.) */
  67. /* Removed by Mly 4-Jul-94; added back 8-24-95 because gcc sucks. */
  68. #define NO_UNION_TYPE
  69.  
  70. /* crt0.c, if it is used, should use the i386-bsd style of entry.
  71.    with no extra dummy args.  On USG and XENIX,
  72.    NO_REMAP says this isn't used. */
  73.  
  74. #define CRT0_DUMMIES bogus_fp,
  75.  
  76. /* crt0.c should define a symbol `start' and do .globl with a dot.  */
  77.  
  78. #define DOT_GLOBAL_START
  79.  
  80. #ifdef XENIX
  81. /* Data type of load average, as read out of kmem.  */
  82. #define LOAD_AVE_TYPE short
  83.  
  84. /* Convert that into an integer that is 100 for a load average of 1.0  */
  85. #define LOAD_AVE_CVT(x) (((double) (x)) * 100.0 / FSCALE)
  86.  
  87. #define FSCALE 256.0         /* determined by experimentation...  */
  88. #endif
  89.  
  90.  
  91. #ifdef SOLARIS2
  92. /* Data type of load average, as read out of kmem.  */
  93. #define LOAD_AVE_TYPE long
  94.  
  95. /* Convert that into an integer that is 100 for a load average of 1.0  */
  96. /* This is totally uncalibrated. */
  97. #define LOAD_AVE_CVT(x) ((int) (((double) (x)) * 100.0 / FSCALE))
  98.  
  99. #ifndef SOLARIS2_4
  100. /* j.w.hawtin@lut.ac.uk says Solaris 2.1 on the X86 needs -lkvm, and it 
  101.    already has FSCALE defined in a system header.  */
  102. #define LIBS_MACHINE -lkvm
  103.  
  104. #else /* SOLARIS2_4 */
  105. #ifndef __GNUC__
  106. #if 0 /* wisner@gryphon.com says this screws up cpp */
  107. #define C_SWITCH_MACHINE -Xa
  108. #endif
  109. #ifndef NOT_C_CODE
  110. #ifdef HAVE_ALLOCA_H
  111. #include <alloca.h>
  112. #endif /* HAVE_ALLOCA_H */
  113. #endif /* not NOT_C_CODE */
  114. #endif /* not __GNUC__ */
  115. #endif /* SOLARIS2_4 */
  116.  
  117. /* configure thinks solaris X86 has gethostname, but it does not work,
  118.    so undefine it.  */
  119. #undef HAVE_GETHOSTNAME
  120.  
  121. #else /* not SOLARIS2 */
  122. #ifdef USG5_4 /* Older USG systems do not support the load average.  */
  123. /* Data type of load average, as read out of kmem.  */
  124.  
  125. #define LOAD_AVE_TYPE long
  126.  
  127. /* Convert that into an integer that is 100 for a load average of 1.0  */
  128. /* This is totally uncalibrated. */
  129.  
  130. #define LOAD_AVE_CVT(x) ((int) (((double) (x)) * 100.0 / FSCALE))
  131. #define FSCALE 256.0
  132. #endif
  133. #endif /* not SOLARIS2 */
  134.  
  135. /* Define CANNOT_DUMP on machines where unexec does not work.
  136.    Then the function dump-emacs will not be defined
  137.    and temacs will do (load "loadup") automatically unless told otherwise.  */
  138.  
  139. /* #define CANNOT_DUMP */
  140.  
  141. /* Define VIRT_ADDR_VARIES if the virtual addresses of
  142.    pure and impure space as loaded can vary, and even their
  143.    relative order cannot be relied on.
  144.  
  145.    Otherwise Emacs assumes that text space precedes data space,
  146.    numerically.  */
  147.  
  148. /* #define VIRT_ADDR_VARIES */
  149.  
  150. #ifdef XENIX
  151.  
  152. /* Define NO_REMAP if memory segmentation makes it not work well
  153.    to change the boundary between the text section and data section
  154.    when Emacs is dumped.  If you define this, the preloaded Lisp
  155.    code will not be sharable; but that's better than failing completely.  */
  156.  
  157. #define NO_REMAP
  158.  
  159. #define STACK_DIRECTION -1
  160.  
  161. /* Since cannot purify, use standard Xenix 386 startup code. */
  162.  
  163. #define START_FILES    /lib/386/Sseg.o pre-crt0.o /lib/386/Scrt0.o
  164.  
  165. /* These really use terminfo.  */
  166.  
  167. #define LIBS_TERMCAP /lib/386/Slibcurses.a  \
  168.    /lib/386/Slibtinfo.a /lib/386/Slibx.a
  169.  
  170. /* Standard libraries for this machine.  Since `-l' doesn't work in `ld'.  */
  171. /* '__fltused' is unresolved w/o Slibcfp.a */
  172. #define LIB_STANDARD /lib/386/Slibcfp.a /lib/386/Slibc.a
  173. #else /* not XENIX */
  174.  
  175. /* this brings in alloca() if we're using cc */
  176. #ifdef USG
  177. #ifndef LIB_STANDARD
  178. #ifdef USG5_4
  179. #define LIB_STANDARD -lc
  180. #else /* not USG5_4 */
  181. #define LIB_STANDARD -lPW -lc
  182. #endif /* not USG5_4 */
  183. #endif /* LIB_STANDARD */
  184.  
  185. #define HAVE_ALLOCA
  186. #define NO_REMAP 
  187. #define TEXT_START 0
  188. #endif /* USG */
  189. #endif /* not XENIX */
  190.  
  191. #ifdef BSD
  192. #define HAVE_ALLOCA
  193. #endif /* BSD */
  194.  
  195. /* If compiling with GCC, let GCC implement alloca.  */
  196. #if defined(__GNUC__) && !defined(alloca)
  197. #define alloca(n) __builtin_alloca(n)
  198. #define HAVE_ALLOCA
  199. #endif
  200.  
  201. /* Solaris defines alloca to __builtin_alloca & doesn't provide a prototype. */
  202. #ifdef __SUNPRO_C
  203. #  ifndef NOT_C_CODE
  204. #    include <alloca.h>
  205.      void *__builtin_alloca (unsigned int);
  206. #  endif /* __SUNPRO_C */
  207. #endif /* NOT_C_CODE */
  208.  
  209. #ifdef USG5_4
  210. #define DATA_SEG_BITS 0x08000000
  211. #endif
  212.  
  213. #ifdef MSDOS
  214. #define NO_REMAP
  215. #endif
  216.  
  217. #ifdef WINDOWSNT
  218. #define VIRT_ADDR_VARIES
  219. #define DATA_END     get_data_end ()
  220. #define DATA_START     get_data_start ()
  221. #define HAVE_ALLOCA
  222. #endif
  223.  
  224. #ifdef __GNUC__
  225. /* GCC's alloca() is semi-broken.  See lisp.h.
  226.  
  227.    This brokenness has been confirmed under both Linux and NetBSD.
  228.    It may also exist on non-Intel architectures. */
  229. #define BROKEN_ALLOCA_IN_FUNCTION_CALLS
  230. #endif
  231.